{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Using TensorFlow backend.\n"
     ]
    }
   ],
   "source": [
    "from keras.models import Sequential\n",
    "from keras.layers import Dense\n",
    "from keras.optimizers import SGD\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "x_data = np.random.rand(100)\n",
    "noise = np.random.normal(0, 0.01, x_data.shape)\n",
    "y_data = 0.1*x_data + 0.2 + noise"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(x_data, y_data)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "model = Sequential()\n",
    "model.add(Dense(1, input_shape=(1,)))\n",
    "model.compile(optimizer=SGD(), loss=\"MSE\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "step: 0     cost: 0.57457125\n",
      "step: 500     cost: 0.0132058235\n",
      "step: 1000     cost: 0.003386997\n",
      "step: 1500     cost: 0.0009302745\n",
      "step: 2000     cost: 0.00031559178\n",
      "step: 2500     cost: 0.00016179448\n",
      "step: 3000     cost: 0.00012331385\n",
      "step: 3500     cost: 0.00011368574\n",
      "step: 4000     cost: 0.00011127671\n",
      "step: 4500     cost: 0.00011067402\n",
      "step: 5000     cost: 0.00011052318\n",
      "step: 5500     cost: 0.00011048549\n"
     ]
    }
   ],
   "source": [
    "for i in range(6000):b\n",
    "    cost = model.train_on_batch(x_data, y_data)\n",
    "    if i % 500 == 0:\n",
    "        print('step:', i, '    cost:', cost)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[0.10255419]] [0.19742167]\n"
     ]
    }
   ],
   "source": [
    "W, b = model.layers[0].get_weights()\n",
    "print(W, b)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "y_pred = model.predict(x_data)\n",
    "plt.scatter(x_data, y_data)\n",
    "plt.plot(x_data, y_pred, 'r-', lw=3)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 非线性回归"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "x_data = np.linspace(-1, 1, 200)\n",
    "noise = np.random.normal(0, 0.1, x_data.shape)\n",
    "y_data = np.square(x_data) + noise"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(x_data, y_data)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "model = Sequential()\n",
    "model.add(Dense(5, input_shape=(1,), activation='tanh'))\n",
    "model.add(Dense(1))\n",
    "model.compile(optimizer=SGD(), loss=\"MSE\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "step: 0     cost: 0.24029961\n",
      "step: 500     cost: 0.07684365\n",
      "step: 1000     cost: 0.050118428\n",
      "step: 1500     cost: 0.032115318\n",
      "step: 2000     cost: 0.021581726\n",
      "step: 2500     cost: 0.016286941\n",
      "step: 3000     cost: 0.013948368\n",
      "step: 3500     cost: 0.012998235\n",
      "step: 4000     cost: 0.012618579\n",
      "step: 4500     cost: 0.012453574\n",
      "step: 5000     cost: 0.012365404\n",
      "step: 5500     cost: 0.012304439\n",
      "[[0.43090063 0.6229423  0.68715334 1.6815361  0.22594832]] [ 0.00573495 -0.03981408 -0.1077055   0.94364595  0.41059625]\n"
     ]
    }
   ],
   "source": [
    "for i in range(6000):\n",
    "    cost = model.train_on_batch(x_data, y_data)\n",
    "    if i % 500 == 0:\n",
    "        print('step:', i, '    cost:', cost)\n",
    "\n",
    "\n",
    "W, b = model.layers[0].get_weights()\n",
    "print(W, b)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "y_pred = model.predict(x_data)\n",
    "plt.scatter(x_data, y_data)\n",
    "plt.plot(x_data, y_pred, 'r-', lw=3)\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
